home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine CD 1995 / Archive Magazine CD 1995.iso / discs / prog_disc / volume_1 / issue_05 / wimp / drawing (.txt)
Encoding:
RISC OS BBC BASIC V Source  |  1995-06-15  |  4.7 KB  |  218 lines

  1.  >$.Wimp.Drawing
  2.  ***********************************
  3.  *   Drawing in the WIMP Windows   *
  4.  *      By Adrian Philip Look      *
  5.  *        30th December 1987       *
  6.  ***********************************
  7. ("FX4,0"):
  8. $;" at line ";
  9.  colour=8 
  10. colour,0,0,255
  11.  colour
  12. variables
  13. version=
  14. wimp_initialise
  15. flags=
  16. flags(
  17. %title_type=
  18. title_type(
  19. Rwally%=
  20. create_window(50,50,500,500,1000,1000,flags,"Window 1",title_type,top)
  21. Rhello%=
  22. create_window(400,400,850,850,500,500,flags,"Window 2",title_type,top)
  23. Uanext%=
  24. create_window(800,200,1000,700,1000,1000,flags,"Window 3",title_type,top)
  25. Swhich%=
  26. create_window(50,700,400,800,1000,1000,flags,"Window 4",title_type,top)
  27. open_window(wally%,
  28. open_window(hello%,
  29. open_window(anext%,
  30. open_window(which%,
  31.  "Wimp_ForceRedraw",-1,0,0,1280,1024
  32. *POINTER
  33.  "Wimp_Poll",mask,block% 
  34.  reason
  35. handle=!block%
  36. wimp_poll(reason,handle)
  37. variables
  38.  block% &100
  39. title_foreground=1
  40. title_background=6
  41. work_area_foreground=1
  42. work_area_background=7
  43. scroll_bar_inner=1
  44. scroll_bar_outer=6
  45. top=-1
  46. mask=0
  47. amountx=100
  48. amounty=100
  49. wimp_poll(reason,handle)
  50. 7    *FX19
  51.  reason 
  52.  1  : 
  53. redraw(!block%)
  54.  2  : 
  55. open_window(handle,
  56.  3  : 
  57. close_window(handle)
  58.  10 : 
  59. scroll_acknowledge
  60. wimp_initialise
  61.  version%
  62.  "Wimp_Initialise",0 
  63.  version%
  64. =version%/100
  65. create_window(x0,y0,x1,y1,sizex,sizey,flags,title$,title_type,pos)
  66. block%!0=x0
  67. block%!4=y0
  68. block%!8=x1
  69. block%!12=y1
  70. block%!16=0
  71. block%!20=0
  72. block%!24=pos
  73. block%!28=flags
  74. block%?32=title_foreground
  75. block%?33=title_background
  76. T"block%?34=work_area_foreground
  77. U"block%?35=work_area_background
  78. block%?36=scroll_bar_outer
  79. block%?37=scroll_bar_inner
  80. block%?38=0
  81. block%!40=0
  82. block%!44=-sizey
  83. block%!48=sizex
  84. block%!52=0
  85. block%!56=title_type
  86. $(block%+72)=
  87. title$,11)
  88. block%!84=0
  89.  "Wimp_CreateWindow",0,block% 
  90.  handle%
  91. =handle%
  92. flags(tbar,move,vscb,hscb,boqb,scrl,wimp)
  93.  flag%
  94. flag%=0
  95.  tbar 
  96.  flag%=flag% 
  97.  move 
  98.  flag%=flag% 
  99.  vscb 
  100.  flag%=flag% 
  101.  hscb 
  102.  flag%=flag% 
  103.  wimp 
  104.  flag%=flag% 
  105.  boqb 
  106.  flag%=flag% 
  107.  scrl 
  108.  flag%=flag% 
  109.  &100
  110. =flag%
  111. title_type(hasb,text,txhc,txvc,back)
  112.  flag%
  113.  hasb 
  114.  flag%=flag% 
  115.  text 
  116.  flag%=flag% 
  117.  txhc 
  118.  flag%=flag% 
  119.  txvc 
  120.  flag%=flag% 
  121.  back 
  122.  flag%=flag% 
  123. =flag%
  124. open_window(handle,new)
  125.  new 
  126. block%!0=handle
  127.  "Wimp_GetWindowInfo",,block%
  128. block%!28=top
  129.  "Wimp_OpenWindow",,block%
  130. close_window(handle)
  131. !block%=handle
  132.  "Wimp_CloseWindow",,block%
  133. delete_window(handle)
  134. !block%=handle
  135.  "Wimp_DeleteWindow",,block%
  136. scroll_acknowledge
  137. scx=block%!20
  138. scy=block%!24
  139. scx+=(block%!32)*amountx
  140. scy+=(block%!36)*amounty
  141. block%!20=scx
  142. block%!24=scy
  143.  "Wimp_OpenWindow",,block%
  144. redraw(handle)
  145. !block%=handle
  146.  "Wimp_RedrawWindow",,block% 
  147.  more
  148. which_window
  149. which_window
  150.  handle 
  151.  hello% : 
  152. draw_example1
  153.  wally% : 
  154. draw_example2
  155.  which% : 
  156. draw_example3
  157.  anext% : 
  158. draw_example4
  159. draw_example1
  160.  more
  161.  bx+175,by-175:
  162.  &95,bx+20,by-175
  163.  bx+32,by-143:
  164. "  Using the WIMP"
  165.  bx+32,by-175:
  166. "    by Archive"
  167.  "Wimp_GetRectangle",,block% 
  168.  more
  169. draw_example2
  170.  more
  171. gx0=(gx0-bx) 
  172.  32 *32 +bx
  173. gy1=(gy1-by) 
  174.  32 *32 +by
  175.  y=gy1 
  176.  gy0-64 
  177.  x=gx0-64 
  178.  gx1 
  179.  (x/32+y/32) 
  180.  x+16,y+16:
  181.  &9d,x+2,y+16
  182.  "Wimp_GetRectangle",,block% 
  183.  more
  184. draw_example3
  185.  more
  186.  bx,by
  187.  temp=0 
  188.  0,temp 
  189. "Hello and Welcome to Archive";
  190.  (temp 
  191.  5)=0 
  192.  temp
  193.  "Wimp_GetRectangle",,block% 
  194.  more
  195. draw_example4
  196.  more
  197.  141,gx0+1,gy0+1
  198.  "Wimp_GetRectangle",,block% 
  199.  more
  200. x0=block%!4
  201. y0=block%!8
  202. x1=block%!12
  203. y1=block%!16
  204. scx=block%!20
  205. scy=block%!24
  206. gx0=block%!28
  207. gy0=block%!32
  208. gx1=block%!36
  209. gy1=block%!40
  210. :bx=x0-scx  : 
  211.  all drawing should be relative to bx,by
  212. by=y1-scy
  213. update_window(handle)
  214. !block%=handle
  215.  "Wimp_GetWindowState",,block%
  216.  "Wimp_UpdateWindow",,block%
  217. which_window
  218.